// -*- mode: rust; -*-
//
// This file is part of curve25519-dalek.
// Copyright (c) 2016-2021 isis lovecruft
// Copyright (c) 2016-2019 Henry de Valence
// See LICENSE for licensing information.
//
// Authors:
// - isis agora lovecruft <isis@patternsinthevoid.net>
// - Henry de Valence <hdevalence@hdevalence.ca>

//! This module contains constants used by the AVX2 backend.

use crate::backend::vector::packed_simd::u32x8;

use crate::backend::vector::avx2::edwards::{CachedPoint, ExtendedPoint};
use crate::backend::vector::avx2::field::FieldElement2625x4;

#[cfg(feature = "precomputed-tables")]
use crate::window::NafLookupTable8;

/// The identity element as an `ExtendedPoint`.
pub(crate) static EXTENDEDPOINT_IDENTITY: ExtendedPoint = ExtendedPoint(FieldElement2625x4([
    u32x8::new_const(0, 1, 0, 0, 1, 0, 0, 0),
    u32x8::splat_const::<0>(),
    u32x8::splat_const::<0>(),
    u32x8::splat_const::<0>(),
    u32x8::splat_const::<0>(),
]));

/// The identity element as a `CachedPoint`.
pub(crate) static CACHEDPOINT_IDENTITY: CachedPoint = CachedPoint(FieldElement2625x4([
    u32x8::new_const(121647, 121666, 0, 0, 243332, 67108845, 0, 33554431),
    u32x8::new_const(67108864, 0, 33554431, 0, 0, 67108863, 0, 33554431),
    u32x8::new_const(67108863, 0, 33554431, 0, 0, 67108863, 0, 33554431),
    u32x8::new_const(67108863, 0, 33554431, 0, 0, 67108863, 0, 33554431),
    u32x8::new_const(67108863, 0, 33554431, 0, 0, 67108863, 0, 33554431),
]));

/// The low limbs of (2p, 2p, 2p, 2p), so that
/// ```ascii,no_run
/// (2p, 2p, 2p, 2p) = [P_TIMES_2_LO, P_TIMES_2_HI, P_TIMES_2_HI, P_TIMES_2_HI, P_TIMES_2_HI]
/// ```
pub(crate) static P_TIMES_2_LO: u32x8 = u32x8::new_const(
    67108845 << 1,
    67108845 << 1,
    33554431 << 1,
    33554431 << 1,
    67108845 << 1,
    67108845 << 1,
    33554431 << 1,
    33554431 << 1,
);

/// The high limbs of (2p, 2p, 2p, 2p), so that
/// ```ascii,no_run
/// (2p, 2p, 2p, 2p) = [P_TIMES_2_LO, P_TIMES_2_HI, P_TIMES_2_HI, P_TIMES_2_HI, P_TIMES_2_HI]
/// ```
pub(crate) static P_TIMES_2_HI: u32x8 = u32x8::new_const(
    67108863 << 1,
    67108863 << 1,
    33554431 << 1,
    33554431 << 1,
    67108863 << 1,
    67108863 << 1,
    33554431 << 1,
    33554431 << 1,
);

/// The low limbs of (16p, 16p, 16p, 16p), so that
/// ```ascii,no_run
/// (16p, 16p, 16p, 16p) = [P_TIMES_16_LO, P_TIMES_16_HI, P_TIMES_16_HI, P_TIMES_16_HI, P_TIMES_16_HI]
/// ```
pub(crate) static P_TIMES_16_LO: u32x8 = u32x8::new_const(
    67108845 << 4,
    67108845 << 4,
    33554431 << 4,
    33554431 << 4,
    67108845 << 4,
    67108845 << 4,
    33554431 << 4,
    33554431 << 4,
);

/// The high limbs of (16p, 16p, 16p, 16p), so that
/// ```ascii,no_run
/// (16p, 16p, 16p, 16p) = [P_TIMES_16_LO, P_TIMES_16_HI, P_TIMES_16_HI, P_TIMES_16_HI, P_TIMES_16_HI]
/// ```
pub(crate) static P_TIMES_16_HI: u32x8 = u32x8::new_const(
    67108863 << 4,
    67108863 << 4,
    33554431 << 4,
    33554431 << 4,
    67108863 << 4,
    67108863 << 4,
    33554431 << 4,
    33554431 << 4,
);

/// Odd multiples of the Ed25519 basepoint:
#[cfg(feature = "precomputed-tables")]
pub(crate) static BASEPOINT_ODD_LOOKUP_TABLE: NafLookupTable8<CachedPoint> = NafLookupTable8([
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            3571425, 10045002, 19036563, 1096096, 243332, 65897020, 0, 28963681,
        ),
        u32x8::new_const(
            30896895, 63055514, 1614915, 5095970, 0, 53791688, 0, 31258312,
        ),
        u32x8::new_const(
            13347627, 40339464, 2236269, 11185503, 0, 22520087, 0, 8659512,
        ),
        u32x8::new_const(
            11125413, 29139905, 32037254, 28360723, 0, 64556417, 0, 9635759,
        ),
        u32x8::new_const(
            33268144, 47262491, 4336918, 15795740, 0, 22027545, 0, 4846528,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            47099681, 31447946, 29365447, 24740513, 42991046, 18317844, 16051644, 21404226,
        ),
        u32x8::new_const(
            31708133, 28909527, 2366091, 13703791, 469246, 54159622, 2601402, 32988002,
        ),
        u32x8::new_const(
            63432457, 30251794, 15163516, 18491340, 28144087, 35605455, 13682295, 18474872,
        ),
        u32x8::new_const(
            12221607, 4967598, 26061980, 26008006, 20226147, 9726961, 17410, 18051083,
        ),
        u32x8::new_const(
            60569645, 62487085, 11911242, 21920922, 4092105, 38186967, 22431483, 31366585,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            18147205, 62587998, 2554617, 536692, 11924528, 26674131, 17645433, 24341419,
        ),
        u32x8::new_const(
            11573357, 27579485, 31491870, 29000885, 10800976, 51902791, 28076395, 20464029,
        ),
        u32x8::new_const(
            56031649, 10856669, 11791193, 26769430, 25306956, 5922200, 6630685, 9385098,
        ),
        u32x8::new_const(
            31319348, 23906711, 16290213, 32142166, 61106354, 17181823, 3548308, 12022566,
        ),
        u32x8::new_const(
            5904298, 50218605, 11826440, 5492249, 10379071, 3472255, 172742, 31948344,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            10625852, 15193821, 22918394, 23676410, 53695416, 54987793, 10067515, 11747680,
        ),
        u32x8::new_const(
            65013325, 1309652, 29616320, 28922974, 60360891, 19621771, 9938982, 30406429,
        ),
        u32x8::new_const(
            54967954, 65931918, 5595602, 25719523, 64909864, 30566415, 15945272, 8495317,
        ),
        u32x8::new_const(
            1167157, 55265018, 11507029, 31641054, 43497904, 2367338, 12937761, 27517066,
        ),
        u32x8::new_const(
            656704, 2544994, 13006713, 480979, 38471594, 62541240, 25353597, 11531760,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            22176662, 3984313, 27495285, 4110608, 2909584, 30594106, 15677919, 2549183,
        ),
        u32x8::new_const(
            33979105, 62269905, 2071511, 6894756, 53189950, 47232857, 6408191, 6123225,
        ),
        u32x8::new_const(
            32553873, 63948030, 12612401, 3633166, 24054373, 37626618, 14481327, 8520484,
        ),
        u32x8::new_const(
            56552486, 10749438, 12034813, 28811946, 1445640, 36755601, 12104575, 10257833,
        ),
        u32x8::new_const(
            22795808, 48761311, 1136056, 9380768, 1411523, 5341811, 27318329, 9686767,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            21157200, 39156966, 20473176, 4934657, 61478183, 45121537, 5429856, 13035023,
        ),
        u32x8::new_const(
            7954529, 58789246, 31440083, 7054221, 38438565, 36856107, 1364112, 14548122,
        ),
        u32x8::new_const(
            26120083, 36321360, 4919997, 31687496, 33757765, 36237559, 15243054, 32163861,
        ),
        u32x8::new_const(
            25878307, 46544824, 19455951, 2414935, 16844726, 56521560, 32680554, 26660660,
        ),
        u32x8::new_const(
            48360220, 43407178, 12187042, 24925816, 7423722, 25746484, 12814654, 17395963,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            63153652, 32195955, 4087908, 8431689, 30392384, 47203165, 8986649, 9053039,
        ),
        u32x8::new_const(
            63659241, 47988767, 2931872, 19953600, 11747107, 51610101, 20952181, 13364887,
        ),
        u32x8::new_const(
            3659197, 58790649, 5930099, 2605312, 28477896, 580728, 20579735, 2610622,
        ),
        u32x8::new_const(
            41781607, 17161358, 10690531, 24368015, 47027031, 36742339, 5414694, 13156365,
        ),
        u32x8::new_const(
            13237853, 51182423, 8954802, 29006542, 22643989, 56896541, 22830593, 10289708,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            1401265, 58846825, 30911620, 32239180, 15391552, 15200821, 6339309, 16403588,
        ),
        u32x8::new_const(
            55913797, 29541724, 1664461, 21709410, 38470488, 47097092, 17674945, 32666066,
        ),
        u32x8::new_const(
            22844482, 10797709, 27548106, 31638735, 34500968, 26611503, 19727211, 13160873,
        ),
        u32x8::new_const(
            31485204, 14496164, 13981208, 10276888, 5748808, 35024436, 2740987, 7479021,
        ),
        u32x8::new_const(
            58541207, 14866135, 32344041, 545930, 62661488, 6941250, 27940205, 11976112,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            39849808, 44781685, 15697329, 24387845, 12501486, 50260092, 23199481, 31929024,
        ),
        u32x8::new_const(
            24823070, 27956017, 27034296, 10316465, 47664045, 11152446, 15719183, 30181617,
        ),
        u32x8::new_const(
            20771189, 19969144, 31433937, 19185213, 27565920, 10384445, 2893359, 9255362,
        ),
        u32x8::new_const(
            42894974, 11925545, 32134441, 32738810, 55916336, 32479272, 19563550, 5511385,
        ),
        u32x8::new_const(
            17857161, 47809169, 14564114, 27997751, 33024640, 38669671, 31956536, 27313245,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            58237774, 15917425, 18872208, 19394230, 17374297, 6101419, 4839741, 6596900,
        ),
        u32x8::new_const(
            66947393, 15744215, 18368993, 17750160, 41006525, 9205497, 2629667, 32170865,
        ),
        u32x8::new_const(
            66481381, 1919414, 28338762, 7372967, 33819153, 4156199, 27126309, 12739816,
        ),
        u32x8::new_const(
            44117158, 58545296, 22521371, 11809712, 28998792, 50731010, 30215699, 25748377,
        ),
        u32x8::new_const(
            23561284, 4160244, 9035405, 24895184, 39761639, 59253416, 8684759, 22487864,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            12671134, 56419053, 16092401, 30038207, 4002647, 47822606, 7151311, 28430768,
        ),
        u32x8::new_const(
            61041684, 35765374, 30598048, 19666539, 44150175, 40140037, 290469, 28442674,
        ),
        u32x8::new_const(
            18847796, 1371617, 33316881, 13199936, 43646578, 17068881, 12074900, 1537415,
        ),
        u32x8::new_const(
            10052225, 38316070, 27469797, 5297537, 50725570, 20435349, 10339121, 2779737,
        ),
        u32x8::new_const(
            18372189, 15466385, 24762130, 22217964, 23503887, 47844464, 10415034, 2606889,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            55082775, 45300503, 16032654, 5964396, 17743504, 24634761, 19493066, 5184611,
        ),
        u32x8::new_const(
            50172633, 35093294, 10040575, 23616256, 4543900, 61852191, 4049821, 7423669,
        ),
        u32x8::new_const(
            20295398, 40009376, 10487190, 15670429, 51972856, 58649552, 20436392, 3432497,
        ),
        u32x8::new_const(
            35189420, 54117751, 12825868, 6283038, 27540739, 30648758, 22658912, 9466689,
        ),
        u32x8::new_const(
            51737549, 40725785, 17409814, 25201086, 21156239, 34176168, 26814520, 5956424,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            8211442, 8014184, 6260823, 22108096, 32182620, 51844847, 2466270, 28582231,
        ),
        u32x8::new_const(
            27199739, 3848333, 31738017, 10892045, 4963982, 65391770, 32551997, 28906469,
        ),
        u32x8::new_const(
            16606846, 32207068, 26404535, 7614129, 45416902, 65584718, 13821785, 2646060,
        ),
        u32x8::new_const(
            36090634, 57981287, 32247670, 22837502, 31003861, 55448117, 6062915, 20369975,
        ),
        u32x8::new_const(
            27381403, 50578107, 522631, 29521058, 31137497, 40220737, 27628049, 1824195,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            59402443, 17056879, 29262689, 6131785, 52551472, 43367471, 29423199, 18899208,
        ),
        u32x8::new_const(
            5749414, 43514612, 11365899, 21514624, 65591890, 60945892, 19841732, 5628567,
        ),
        u32x8::new_const(
            19334369, 52500268, 12307673, 5267367, 3212103, 9035822, 29142161, 30520954,
        ),
        u32x8::new_const(
            57261330, 6819646, 22089161, 9800373, 55155453, 62250856, 13766735, 25244545,
        ),
        u32x8::new_const(
            54370226, 61888301, 24496089, 2540581, 65637506, 60274355, 18154273, 11687259,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            12521903, 26014045, 13995625, 33360175, 23605474, 7376434, 27229267, 17195036,
        ),
        u32x8::new_const(
            59482891, 10074423, 574357, 3857753, 61377787, 50306685, 5241065, 20234396,
        ),
        u32x8::new_const(
            23674717, 6997172, 20771841, 16858511, 40565304, 29973136, 7049812, 14585010,
        ),
        u32x8::new_const(
            1427477, 13295732, 31762066, 31499740, 60419925, 54666164, 22009424, 8089609,
        ),
        u32x8::new_const(
            58154031, 41593020, 15342328, 957047, 38937260, 37037498, 24871992, 32973409,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            30654745, 51286025, 21206982, 2433562, 12780105, 31732574, 33087964, 33081189,
        ),
        u32x8::new_const(
            66640017, 42720009, 16567620, 15300745, 1530367, 33001123, 20930247, 21042661,
        ),
        u32x8::new_const(
            15003356, 5294119, 22985605, 18928772, 32628461, 18230172, 14773298, 27193722,
        ),
        u32x8::new_const(
            27555, 65346287, 17017174, 7837720, 21499787, 42855613, 22474984, 13675085,
        ),
        u32x8::new_const(
            24164369, 50130116, 5973149, 24152073, 1577334, 25400030, 18648484, 32228854,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            49518649, 59119280, 31670678, 20396561, 61728330, 651402, 176032, 9529498,
        ),
        u32x8::new_const(
            61765532, 9082232, 32794568, 15526956, 48543100, 32614212, 19001206, 25680229,
        ),
        u32x8::new_const(
            32086091, 10373081, 8996131, 31822823, 35788988, 49973190, 30542040, 17858455,
        ),
        u32x8::new_const(
            48130197, 58121889, 27753291, 29923268, 54448075, 43300790, 9336565, 15770022,
        ),
        u32x8::new_const(
            57725546, 20557498, 9366233, 16023566, 16189031, 2837363, 24315301, 27003505,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            28286608, 10767548, 18220739, 5413236, 48253387, 58255702, 11864864, 28527159,
        ),
        u32x8::new_const(
            45038176, 58655197, 25648758, 10951484, 42564382, 34542843, 23146954, 22234334,
        ),
        u32x8::new_const(
            14858710, 24978793, 15040559, 4379220, 47621477, 40271440, 15650420, 1998736,
        ),
        u32x8::new_const(
            24106391, 9626149, 344505, 25253814, 34579800, 59687089, 25718289, 25904133,
        ),
        u32x8::new_const(
            1981195, 37751302, 26132048, 1764722, 13288231, 28808622, 12531301, 18292949,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            13869851, 31448904, 14963539, 7581293, 20536485, 35021083, 21257574, 33356609,
        ),
        u32x8::new_const(
            36903364, 18429241, 11097857, 5943856, 60583077, 40015815, 30509523, 31915271,
        ),
        u32x8::new_const(
            49161801, 40681915, 67892, 25454357, 22779677, 25798439, 15964829, 5863227,
        ),
        u32x8::new_const(
            60810637, 4496471, 5217137, 14095116, 50942411, 50712663, 2507380, 26844507,
        ),
        u32x8::new_const(
            34579752, 53519385, 10859797, 18816024, 42552864, 39478521, 6783896, 17277037,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            43287109, 27900723, 33182187, 2766754, 17041989, 1018260, 33392790, 4830032,
        ),
        u32x8::new_const(
            60194178, 30788903, 24728888, 14513195, 20897010, 28843233, 20111980, 17475240,
        ),
        u32x8::new_const(
            46042274, 19257042, 4628173, 31649727, 27388316, 66631493, 11541886, 6408028,
        ),
        u32x8::new_const(
            57024680, 49536568, 32050358, 31321917, 17437691, 49672356, 2884755, 20493991,
        ),
        u32x8::new_const(
            59553007, 46782643, 29001173, 1814088, 21930692, 51319706, 14965872, 30748046,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            16441817, 36111849, 6900424, 602234, 46522199, 16441484, 8135070, 21726541,
        ),
        u32x8::new_const(
            37711225, 32701959, 11679112, 13125533, 32154135, 9407918, 26554289, 620848,
        ),
        u32x8::new_const(
            19233407, 30086864, 14679568, 2797374, 4892806, 7993077, 247658, 5632804,
        ),
        u32x8::new_const(
            37427262, 26675495, 27125659, 13496131, 50718473, 40115609, 28505351, 27837393,
        ),
        u32x8::new_const(
            196819, 18410429, 7070012, 21691388, 29763371, 24754123, 9727048, 10930179,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            28319289, 40734650, 16225680, 24739184, 64272368, 35356897, 7866648, 13635853,
        ),
        u32x8::new_const(
            34165295, 48328447, 27041670, 23643655, 48949950, 52963288, 30411133, 6045174,
        ),
        u32x8::new_const(
            18583559, 41649834, 9813585, 26098520, 25682734, 26733526, 19276490, 10654728,
        ),
        u32x8::new_const(
            34867476, 52715968, 5694571, 13380978, 15134994, 1831255, 8608001, 17266401,
        ),
        u32x8::new_const(
            59925903, 44282172, 27802465, 1855069, 14234749, 36635487, 11302294, 10938429,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            8373273, 49064494, 4932071, 32997499, 38472880, 29335908, 14504412, 22460029,
        ),
        u32x8::new_const(
            31795930, 50785923, 25835990, 25790073, 65669841, 11360450, 9969157, 9008164,
        ),
        u32x8::new_const(
            50262498, 45869261, 16124434, 15336007, 882762, 42522623, 11277198, 26296377,
        ),
        u32x8::new_const(
            42332732, 59129236, 14452816, 567985, 208061, 34722729, 32008143, 14828749,
        ),
        u32x8::new_const(
            17937794, 36846032, 32102665, 4442466, 19745435, 31633451, 7146411, 15812027,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            30741269, 38648744, 12562645, 30092623, 25073992, 28730659, 27911745, 30000958,
        ),
        u32x8::new_const(
            2859794, 25991700, 17776078, 27091930, 2328322, 60061146, 18581824, 18039008,
        ),
        u32x8::new_const(
            58206333, 17917354, 1972306, 11853766, 2655376, 60543390, 18416710, 13287440,
        ),
        u32x8::new_const(
            62746330, 61423885, 21246577, 2266675, 60099139, 14804707, 14772234, 20679434,
        ),
        u32x8::new_const(
            26987698, 15488817, 715616, 2339565, 51980752, 17333865, 21965103, 10839820,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            18672548, 57660959, 16042910, 19519287, 62865851, 17580961, 26628347, 23774759,
        ),
        u32x8::new_const(
            368070, 3464471, 25888304, 30370559, 52396053, 45426828, 28745251, 9246829,
        ),
        u32x8::new_const(
            29090099, 57950037, 23104657, 4903923, 10987778, 56163684, 23621539, 10332760,
        ),
        u32x8::new_const(
            53338235, 44851161, 21606845, 31069622, 4243630, 34464392, 11286454, 5802022,
        ),
        u32x8::new_const(
            46710757, 63389067, 11642865, 1980986, 12967337, 28162061, 3854192, 30432268,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            12179834, 41005450, 12809619, 33525228, 4624405, 46957889, 16968743, 11827816,
        ),
        u32x8::new_const(
            51521162, 12466775, 31791271, 15303651, 49798465, 62714504, 6509600, 12918560,
        ),
        u32x8::new_const(
            20445559, 1756449, 28848701, 7920171, 9835040, 5900071, 28757409, 12376688,
        ),
        u32x8::new_const(
            18259496, 14281012, 21767026, 10232236, 20000226, 12400540, 4104902, 23570543,
        ),
        u32x8::new_const(
            3687440, 26546648, 13328821, 26841081, 49822734, 22334054, 244496, 24862543,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            59523541, 62195428, 3853227, 13954801, 12387708, 47627615, 27221350, 17899572,
        ),
        u32x8::new_const(
            63193587, 36343307, 14595132, 6880795, 1364792, 37648434, 3259017, 20536046,
        ),
        u32x8::new_const(
            30362834, 10440372, 9574624, 11729232, 63861613, 21748389, 5530846, 2721586,
        ),
        u32x8::new_const(
            18339760, 1550632, 17170271, 25732971, 28459263, 63142237, 21642345, 31557672,
        ),
        u32x8::new_const(
            10611282, 5204623, 18049257, 214175, 19432723, 49809070, 26010406, 27449522,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            19770733, 26478685, 9464541, 29158041, 28604307, 45196604, 7586524, 6641859,
        ),
        u32x8::new_const(
            65654484, 52230498, 30886612, 19112823, 47271809, 38942611, 16020035, 10773481,
        ),
        u32x8::new_const(
            27464323, 54451016, 20646645, 17732915, 23008717, 53626684, 3253189, 15614410,
        ),
        u32x8::new_const(
            52381752, 40693008, 7063024, 28469981, 51159478, 44543211, 19941777, 5985451,
        ),
        u32x8::new_const(
            13553668, 35524849, 14788737, 1883845, 12385775, 47958835, 29135466, 1776722,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            36719806, 20827965, 23175373, 32996806, 42041892, 65708790, 5467143, 20884008,
        ),
        u32x8::new_const(
            43256281, 40770646, 17244063, 31959819, 64366384, 43544617, 25057754, 12628720,
        ),
        u32x8::new_const(
            17337782, 58472057, 27906934, 15305274, 30292418, 39284317, 16946773, 24806712,
        ),
        u32x8::new_const(
            6485126, 32447403, 16261486, 13561940, 49439635, 10738368, 16419889, 8897231,
        ),
        u32x8::new_const(
            44812203, 40122262, 25496058, 2759794, 25295304, 52178368, 24154195, 29334408,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            42307254, 57217102, 1088936, 3832827, 33905401, 23130334, 6958056, 12622851,
        ),
        u32x8::new_const(
            3881189, 14870059, 19712830, 6071598, 38147944, 60776394, 3427938, 13765703,
        ),
        u32x8::new_const(
            7666911, 24227591, 17077136, 22967588, 6874639, 30915523, 11451695, 24292224,
        ),
        u32x8::new_const(
            13659529, 31984463, 28764736, 20506164, 64729627, 49321636, 28284636, 25472371,
        ),
        u32x8::new_const(
            39360308, 42281399, 9446504, 868960, 49227724, 21351115, 30561851, 11292096,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            7071115, 46444090, 5387916, 15432877, 27226682, 41506862, 2398278, 3978240,
        ),
        u32x8::new_const(
            51009614, 54216973, 24368938, 31392616, 38456150, 62313644, 6729154, 99724,
        ),
        u32x8::new_const(
            17474332, 62857913, 2619930, 30659308, 18268181, 32809239, 22826292, 24561895,
        ),
        u32x8::new_const(
            38187020, 67003092, 14118280, 16500577, 18808560, 64983716, 25712929, 32518261,
        ),
        u32x8::new_const(
            25735813, 62284262, 10824872, 20558596, 48149681, 31162667, 22608274, 26285185,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            963440, 63742255, 10230323, 25515008, 32506414, 6105697, 25980317, 24645129,
        ),
        u32x8::new_const(
            7162189, 8101249, 14679265, 33443386, 2002396, 8541405, 19442276, 4795881,
        ),
        u32x8::new_const(
            8116694, 51463069, 4415528, 25599140, 55805721, 39582709, 6719436, 30033839,
        ),
        u32x8::new_const(
            14468202, 42181869, 25188826, 9639755, 47546189, 62711146, 32762447, 18338064,
        ),
        u32x8::new_const(
            33880058, 32810909, 8969931, 13095238, 38360605, 40138517, 9246134, 4928058,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            63655588, 17883670, 9410246, 26162761, 5000571, 7349225, 23785252, 32751089,
        ),
        u32x8::new_const(
            28568737, 10733123, 9342397, 21570673, 54096560, 32467591, 20494687, 21511513,
        ),
        u32x8::new_const(
            47675157, 47932807, 29250946, 15672208, 59760469, 9945465, 14939287, 18437405,
        ),
        u32x8::new_const(
            37985267, 8609815, 31573002, 3373596, 47828883, 20834216, 13248616, 24154292,
        ),
        u32x8::new_const(
            5543543, 29553242, 3386453, 30501150, 25058089, 15236571, 8814395, 32462955,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            39158670, 15322548, 20495103, 3312736, 14557171, 12985179, 8044741, 3176899,
        ),
        u32x8::new_const(
            24673290, 29693310, 21412266, 18324699, 2154518, 40329021, 17500543, 3954277,
        ),
        u32x8::new_const(
            36758685, 38738957, 165513, 14691866, 3070475, 10424235, 17096536, 16896898,
        ),
        u32x8::new_const(
            59790459, 43094586, 8720681, 10423589, 1122030, 31545615, 4463786, 31811293,
        ),
        u32x8::new_const(
            49778992, 60881044, 20509974, 5832494, 64155961, 31483358, 4511231, 20307815,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            2863373, 40876242, 26865913, 24067353, 15726407, 40919070, 12953902, 9931535,
        ),
        u32x8::new_const(
            60934877, 42512204, 21649141, 21945190, 52211954, 60984193, 7046207, 5363493,
        ),
        u32x8::new_const(
            4205971, 64068464, 18197273, 7327176, 51527794, 21166920, 20669933, 11828242,
        ),
        u32x8::new_const(
            59782815, 49617225, 15379924, 457923, 9320508, 21498914, 3242540, 31563182,
        ),
        u32x8::new_const(
            27714753, 8664670, 3366162, 26338598, 56775518, 25796006, 13129151, 21388876,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            59276548, 49972346, 16795002, 33455915, 48430097, 53857205, 18627071, 32474471,
        ),
        u32x8::new_const(
            42160315, 50705892, 13530540, 28012698, 19833221, 55886870, 20191784, 9644313,
        ),
        u32x8::new_const(
            20372416, 28414713, 24084234, 31804096, 33815377, 36131001, 17251241, 18291088,
        ),
        u32x8::new_const(
            56234667, 14920441, 2033267, 29572003, 1724043, 45519699, 17873735, 501988,
        ),
        u32x8::new_const(
            50031659, 31517850, 15697583, 1016845, 43104661, 54769582, 8008601, 27257051,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            52951491, 66542164, 14853573, 30444631, 12045973, 24321813, 16545674, 18160646,
        ),
        u32x8::new_const(
            60107911, 1126003, 5947677, 19486116, 41119984, 30860440, 7935395, 13354438,
        ),
        u32x8::new_const(
            17841328, 11063269, 1664538, 26687568, 6268968, 22280371, 17275484, 4523163,
        ),
        u32x8::new_const(
            15886041, 56799482, 15446552, 21712778, 1005290, 17827215, 4978741, 6854882,
        ),
        u32x8::new_const(
            34319277, 47731002, 20321804, 28544575, 29591814, 63376351, 24754545, 26001714,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            66783087, 5234346, 46102, 8566476, 19947339, 20180418, 25398238, 3726678,
        ),
        u32x8::new_const(
            63890180, 46380965, 20674069, 5366544, 59661487, 48406612, 31533614, 7071217,
        ),
        u32x8::new_const(
            13104676, 1406631, 24326736, 19854367, 61039528, 11019904, 31967425, 19219275,
        ),
        u32x8::new_const(
            39003597, 30143957, 15351834, 8639435, 57309582, 61436794, 15830475, 10090318,
        ),
        u32x8::new_const(
            45923044, 6700175, 99413, 21263025, 23762647, 53905481, 6063914, 10065424,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            42822326, 57678669, 4052879, 25452667, 54049411, 2373092, 22337016, 7701046,
        ),
        u32x8::new_const(
            44382355, 43307377, 16761537, 30373573, 49790216, 23230748, 25655306, 10519391,
        ),
        u32x8::new_const(
            919475, 59371245, 1273450, 25558666, 9724711, 8556709, 25755845, 10887647,
        ),
        u32x8::new_const(
            25465699, 44651158, 17658392, 11257418, 29735193, 22885150, 7094716, 26828565,
        ),
        u32x8::new_const(
            48237389, 47661599, 27054393, 7328070, 27280193, 65616691, 23062005, 4170709,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            26535281, 60238317, 30343788, 25790743, 37993933, 24614372, 9523840, 10401918,
        ),
        u32x8::new_const(
            2783987, 29468958, 4697011, 19804475, 37246678, 46797720, 10261254, 18942252,
        ),
        u32x8::new_const(
            58135580, 60247753, 25301938, 6844561, 20949454, 39844754, 4552026, 919057,
        ),
        u32x8::new_const(
            6694071, 44126261, 32285330, 31370180, 24603698, 53328179, 13971149, 5325636,
        ),
        u32x8::new_const(
            64879487, 582094, 17982081, 19190425, 24951286, 26923842, 29077174, 33286062,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            54863941, 67016431, 1224043, 23371240, 62940074, 52101083, 13523637, 30366406,
        ),
        u32x8::new_const(
            36324581, 25407485, 18258623, 4698602, 50300544, 2658516, 26300935, 2611030,
        ),
        u32x8::new_const(
            27183975, 21791014, 18105064, 9875199, 58118912, 54198635, 6400311, 14767984,
        ),
        u32x8::new_const(
            33918318, 42937962, 14809334, 22136592, 10636588, 29082337, 29829692, 28549776,
        ),
        u32x8::new_const(
            61080905, 854212, 12202487, 20004503, 9256495, 6903981, 20567109, 347423,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            41391822, 34336880, 22362564, 14247996, 12115604, 41583344, 7639288, 28910945,
        ),
        u32x8::new_const(
            62066617, 59758859, 26665947, 11614812, 65737664, 45704543, 30324810, 12868376,
        ),
        u32x8::new_const(
            17491771, 43589814, 9454919, 26047850, 52629282, 39304244, 3868968, 19296062,
        ),
        u32x8::new_const(
            17826638, 30413590, 32534225, 32741469, 15012391, 14365713, 33039233, 14791399,
        ),
        u32x8::new_const(
            64115596, 59197067, 32739005, 23275744, 32954320, 22241406, 20788442, 4942942,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            31956192, 59570132, 2784352, 4237732, 47222312, 4860927, 18658867, 15279314,
        ),
        u32x8::new_const(
            63240583, 28160478, 23524941, 13390861, 66437406, 57718120, 33345312, 28896298,
        ),
        u32x8::new_const(
            39026193, 46239965, 21440243, 25070488, 64012383, 60999016, 16517060, 29565907,
        ),
        u32x8::new_const(
            18118181, 60161496, 4212092, 23976240, 36277753, 62363144, 5816868, 16964362,
        ),
        u32x8::new_const(
            18196138, 62490693, 281468, 7934713, 56027312, 62015725, 4837237, 32932252,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            29885826, 51028067, 30418143, 33438769, 62542283, 39442528, 31535876, 143299,
        ),
        u32x8::new_const(
            17143063, 56709783, 14451852, 15782104, 32762665, 14047066, 26295037, 5432487,
        ),
        u32x8::new_const(
            75151, 533606, 7539077, 30926189, 38410914, 23771680, 4872443, 29199566,
        ),
        u32x8::new_const(
            61522396, 48934708, 16223126, 207380, 11171993, 47975147, 14164574, 352966,
        ),
        u32x8::new_const(
            15449006, 56530757, 26796528, 12045834, 63738697, 40667227, 33001582, 9101885,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            43331297, 18431341, 25801195, 17267698, 19365485, 57295202, 22218985, 21284590,
        ),
        u32x8::new_const(
            2429849, 19152559, 10762172, 22564684, 21880390, 66866426, 20357935, 22641906,
        ),
        u32x8::new_const(
            19771185, 31652693, 3666117, 28136958, 23624283, 55101502, 6313920, 6783662,
        ),
        u32x8::new_const(
            3487137, 7092443, 11001876, 26196524, 47319246, 44542068, 17594073, 15027760,
        ),
        u32x8::new_const(
            49563607, 32191113, 4991283, 25400512, 46539152, 4155103, 32368171, 201203,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            20548943, 14334571, 4073874, 6368588, 53208883, 56484515, 15970071, 25561889,
        ),
        u32x8::new_const(
            49915097, 44030795, 11202344, 29284344, 60258023, 66225712, 8075764, 12383512,
        ),
        u32x8::new_const(
            45248912, 4933668, 9592153, 5819559, 31030983, 38174071, 32435814, 7442522,
        ),
        u32x8::new_const(
            62688129, 48218381, 22089545, 12897361, 21050881, 34278889, 7569163, 3225449,
        ),
        u32x8::new_const(
            19050183, 51089071, 32935757, 22640195, 66122318, 47144608, 18743677, 25177079,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            41186817, 46681702, 31819867, 32997133, 38559207, 27147015, 30293819, 16762988,
        ),
        u32x8::new_const(
            24154689, 51762873, 23883879, 13510519, 55338250, 61224161, 11663149, 30803960,
        ),
        u32x8::new_const(
            18104238, 14117824, 11724021, 21362053, 65704761, 35530242, 13498058, 33522849,
        ),
        u32x8::new_const(
            63812888, 23995539, 28920539, 24005193, 26412223, 36582218, 4251418, 26160309,
        ),
        u32x8::new_const(
            16822053, 66064082, 3482145, 31979593, 45937188, 54475379, 612917, 7976478,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            46509314, 55327128, 8944536, 274914, 26432930, 53829300, 21192572, 3569894,
        ),
        u32x8::new_const(
            20919764, 64356651, 30642344, 17215170, 20335124, 11203745, 18663316, 19024174,
        ),
        u32x8::new_const(
            59297055, 53842463, 3680204, 9806710, 54004169, 51484914, 29807998, 20134199,
        ),
        u32x8::new_const(
            14781592, 22628010, 26877930, 25880359, 30434803, 190607, 30184292, 8991040,
        ),
        u32x8::new_const(
            64400983, 64591751, 854562, 28216111, 20010398, 50414793, 9803872, 22687008,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            15091184, 32550863, 8818643, 4244752, 43123513, 64565526, 408838, 13206998,
        ),
        u32x8::new_const(
            16405061, 60379639, 31489017, 20949281, 27568751, 38734986, 8364264, 12451020,
        ),
        u32x8::new_const(
            16005217, 58008076, 1406778, 26546927, 39571784, 56365493, 31274296, 8918790,
        ),
        u32x8::new_const(
            23271122, 19453469, 27718201, 32742670, 234332, 36785342, 22601675, 14331046,
        ),
        u32x8::new_const(
            40636025, 22442705, 22115403, 23745859, 41164945, 61012, 12499614, 542137,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            62776018, 32835413, 17373246, 17187309, 54469193, 21770290, 15923753, 28996575,
        ),
        u32x8::new_const(
            59385210, 63082298, 12568449, 8509004, 9483342, 16105238, 5756054, 26890758,
        ),
        u32x8::new_const(
            53987996, 38201748, 5521661, 19060159, 18663191, 9093637, 27786835, 31189196,
        ),
        u32x8::new_const(
            65872678, 43635130, 27903055, 25020300, 65772737, 38110437, 5213502, 21909342,
        ),
        u32x8::new_const(
            4438979, 9680838, 10212446, 4764184, 13235684, 58245995, 20264570, 21024049,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            60835961, 48209103, 31049052, 4688268, 12426713, 59829045, 22302488, 29008521,
        ),
        u32x8::new_const(
            50401667, 29716596, 23531224, 7581281, 49071895, 6952617, 14934683, 8218256,
        ),
        u32x8::new_const(
            1601446, 36631413, 31774811, 29625330, 56786114, 8331539, 23129509, 19783344,
        ),
        u32x8::new_const(
            59514327, 64513110, 1772300, 5701338, 5737511, 16147555, 9461515, 5703271,
        ),
        u32x8::new_const(
            33072974, 54300426, 11940114, 1308663, 15627555, 4931627, 28443714, 20924342,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            18135013, 20358426, 4922557, 10015355, 65729669, 34786528, 26248549, 29194359,
        ),
        u32x8::new_const(
            797666, 34997544, 24316856, 25107230, 24612576, 4761401, 15307321, 32404252,
        ),
        u32x8::new_const(
            16501152, 60565831, 9487105, 9316022, 24986054, 31917592, 3962024, 2501883,
        ),
        u32x8::new_const(
            63356796, 50432342, 18044926, 30566881, 42032028, 31415202, 13524600, 16119907,
        ),
        u32x8::new_const(
            3927286, 57022374, 9265437, 21620772, 19481940, 3806938, 24836192, 14572399,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            10785787, 46564798, 368445, 33181384, 5319843, 52687136, 30347110, 29837357,
        ),
        u32x8::new_const(
            56436732, 47859251, 24141084, 22250712, 59046084, 4963427, 33463413, 17168859,
        ),
        u32x8::new_const(
            15512044, 6366740, 4737504, 27644548, 30307977, 25037929, 14593903, 12836490,
        ),
        u32x8::new_const(
            63878897, 34013023, 5860752, 7244096, 3689461, 57012135, 18389096, 11589351,
        ),
        u32x8::new_const(
            4682110, 36302830, 653422, 22316819, 14081831, 5657024, 11088376, 24110612,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            39907267, 45940262, 24887471, 18342609, 878445, 40456159, 12019082, 345107,
        ),
        u32x8::new_const(
            12794982, 28893944, 9447505, 11387200, 16961963, 13916996, 10893728, 25898006,
        ),
        u32x8::new_const(
            44934162, 53465865, 3583620, 1102334, 53917811, 63478576, 2426066, 10389549,
        ),
        u32x8::new_const(
            45096036, 37595344, 19367718, 20257175, 10280866, 41653449, 27665642, 375926,
        ),
        u32x8::new_const(
            45847901, 24064074, 32494820, 32204556, 10720704, 51079060, 1297436, 29853825,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            66303987, 36060363, 16494578, 24962147, 11971403, 49538586, 25060560, 1964341,
        ),
        u32x8::new_const(
            25988481, 27641502, 24909517, 27237087, 66646363, 52777626, 16360849, 10459972,
        ),
        u32x8::new_const(
            43930529, 34374176, 31225968, 8807030, 10394758, 35904854, 25325589, 19335583,
        ),
        u32x8::new_const(
            25094697, 34380951, 20051185, 32287161, 11739332, 53887441, 30517319, 26601892,
        ),
        u32x8::new_const(
            8868546, 35635502, 32513071, 28248087, 51946989, 14222744, 19198839, 23261841,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            51218008, 5070126, 11046681, 5320810, 61212079, 34104447, 23895089, 6460727,
        ),
        u32x8::new_const(
            39843528, 46278671, 10426120, 25624792, 66658766, 37140083, 28933107, 12969597,
        ),
        u32x8::new_const(
            59635793, 40220191, 5751421, 173680, 58321825, 740337, 1412847, 7682623,
        ),
        u32x8::new_const(
            975962, 56440763, 20812276, 22631115, 49095824, 19883130, 2419746, 31043648,
        ),
        u32x8::new_const(
            66208703, 39669328, 22525915, 3748897, 65994776, 34533552, 8126286, 18326047,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            64176557, 3912400, 19351673, 30068471, 31190055, 24221683, 33142424, 28698542,
        ),
        u32x8::new_const(
            34784792, 4109933, 3867193, 19557314, 2112512, 32715890, 24550117, 16595976,
        ),
        u32x8::new_const(
            35542761, 48024875, 10925431, 31526577, 66577735, 23189821, 13375709, 1735095,
        ),
        u32x8::new_const(
            59699254, 43854093, 29783239, 24777271, 19600372, 39924461, 2896720, 1472185,
        ),
        u32x8::new_const(
            56389656, 35980854, 33172342, 1370336, 23707480, 57654949, 7850973, 12655016,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            38372660, 57101970, 7044964, 12732710, 57535705, 6043201, 30858914, 10946592,
        ),
        u32x8::new_const(
            21023468, 6946992, 26403324, 23901823, 35695559, 23440687, 4763891, 6514074,
        ),
        u32x8::new_const(
            28662273, 30933699, 9352242, 26354829, 37402243, 3145176, 8770289, 525937,
        ),
        u32x8::new_const(
            54933102, 36695832, 3281859, 4755022, 23043294, 32794379, 15618886, 23602412,
        ),
        u32x8::new_const(
            9931565, 29897140, 2480737, 24193701, 7833615, 2284939, 893926, 13421882,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            22917795, 22088359, 28978099, 19794863, 60542318, 29878494, 31053731, 9080720,
        ),
        u32x8::new_const(
            23679072, 52547035, 28424916, 20647332, 4008761, 28267029, 12961289, 1589095,
        ),
        u32x8::new_const(
            55616194, 26678929, 14998265, 23274397, 54625466, 46244264, 28627706, 33030665,
        ),
        u32x8::new_const(
            11527330, 6449415, 26531607, 3472938, 41541592, 62607682, 19862690, 20564723,
        ),
        u32x8::new_const(
            32843805, 49066843, 28425824, 19521495, 48792073, 48242878, 27392443, 13175986,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            16185025, 61537525, 2961305, 1492442, 25123147, 3095034, 31896958, 33089615,
        ),
        u32x8::new_const(
            64748157, 18336595, 16522231, 25426312, 65718949, 35485695, 30554083, 10205918,
        ),
        u32x8::new_const(
            39626934, 39271045, 16420458, 9826240, 56483981, 27128085, 3783403, 13360006,
        ),
        u32x8::new_const(
            30793778, 66771960, 17241420, 6564573, 61102581, 29974476, 32385512, 9011754,
        ),
        u32x8::new_const(
            28068166, 11862220, 14323567, 12380617, 52090465, 16029056, 24495309, 21409233,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            59411973, 57437124, 11695483, 17586857, 16108987, 43449109, 31098002, 6248476,
        ),
        u32x8::new_const(
            42258047, 61595931, 29308533, 11742653, 43042345, 27373650, 30165249, 21929989,
        ),
        u32x8::new_const(
            49907221, 9620337, 21888081, 20981082, 56288861, 61562203, 33223566, 3582446,
        ),
        u32x8::new_const(
            57535017, 41003416, 22080416, 14463796, 65518565, 18127889, 24370863, 33332664,
        ),
        u32x8::new_const(
            66655380, 6430175, 471782, 11947673, 30596400, 18898659, 15930721, 4211851,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            6757410, 65455566, 13584784, 11362173, 10797127, 24451471, 19541370, 29309435,
        ),
        u32x8::new_const(
            40360156, 17685025, 18326181, 3846903, 13693365, 63049479, 31900359, 23385063,
        ),
        u32x8::new_const(
            52455038, 57513503, 22163311, 27095042, 48610726, 66454160, 12085341, 26357004,
        ),
        u32x8::new_const(
            22097042, 14063840, 6705778, 14342902, 66139825, 20702105, 31279090, 7495745,
        ),
        u32x8::new_const(
            27360710, 49314837, 18774847, 7146436, 37066216, 42004961, 22409916, 10524446,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            1497507, 33054449, 11839906, 2960428, 40538463, 18884538, 25018820, 4073970,
        ),
        u32x8::new_const(
            54484385, 43640735, 2808257, 20710708, 39840730, 27222424, 21783544, 11848522,
        ),
        u32x8::new_const(
            45765237, 48200555, 9299019, 9393151, 34818188, 56098995, 13575233, 21012731,
        ),
        u32x8::new_const(
            4265428, 49627650, 24960282, 9425650, 47883651, 2797524, 11853190, 22877329,
        ),
        u32x8::new_const(
            25008173, 64199503, 380047, 12107343, 12329448, 11914399, 764281, 29687002,
        ),
    ])),
    CachedPoint(FieldElement2625x4([
        u32x8::new_const(
            35889734, 23047226, 4022841, 7017445, 7274086, 53316179, 25100176, 15310676,
        ),
        u32x8::new_const(
            42409427, 30270106, 6823853, 31551384, 40645017, 66489807, 18021817, 32669351,
        ),
        u32x8::new_const(
            39827134, 43680850, 28297996, 20258133, 26058742, 52643238, 22238331, 21690533,
        ),
        u32x8::new_const(
            60808002, 17499995, 30042246, 29310584, 48219954, 29389518, 8680514, 17844709,
        ),
        u32x8::new_const(
            6452896, 50116553, 9532047, 26821214, 44524351, 50428429, 21904953, 12608048,
        ),
    ])),
]);
